From 7954a48c41bd2b5a15d3fb1a803aef884ee69fd4 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Wed, 28 Feb 2007 09:41:02 +0000 Subject: [PATCH] Add suspend_cancel flag to linux elf notes. Signed-off-by: Brendan Cully --- linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S | 1 + linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S | 1 + tools/xcutils/readnotes.c | 3 +++ xen/common/libelf/libelf-dominfo.c | 1 + xen/include/public/elfnote.h | 7 ++++++- 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S b/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S index d788f323ae..45b6867b68 100644 --- a/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S +++ b/linux-2.6-xen-sparse/arch/i386/kernel/head-xen.S @@ -206,3 +206,4 @@ ENTRY(cpu_gdt_table) ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .long, _PAGE_PRESENT,_PAGE_PRESENT) #endif ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic") + ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long, 1) diff --git a/linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S b/linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S index b7ef0cbcb0..3619988fa4 100644 --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/head-xen.S @@ -186,3 +186,4 @@ ENTRY(empty_zero_page) ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, .quad, _PAGE_PRESENT,_PAGE_PRESENT) ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz, "writable_page_tables|writable_descriptor_tables|auto_translated_physmap|pae_pgdir_above_4gb|supervisor_mode_kernel") ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz, "generic") + ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long, 1) diff --git a/tools/xcutils/readnotes.c b/tools/xcutils/readnotes.c index b445a73837..4ba53819c5 100644 --- a/tools/xcutils/readnotes.c +++ b/tools/xcutils/readnotes.c @@ -103,6 +103,9 @@ static int print_notes(struct elf_binary *elf, const elf_note *start, const elf_ case XEN_ELFNOTE_HV_START_LOW: print_numeric_note("HV_START_LOW", elf , note); break; + case XEN_ELFNOTE_SUSPEND_CANCEL: + print_numeric_note("SUSPEND_CANCEL", elf, note); + break; case XEN_ELFNOTE_L1_MFN_VALID: print_l1_mfn_valid_note("L1_MFN_VALID", elf , note); break; diff --git a/xen/common/libelf/libelf-dominfo.c b/xen/common/libelf/libelf-dominfo.c index 85a82f3bf5..eedf970753 100644 --- a/xen/common/libelf/libelf-dominfo.c +++ b/xen/common/libelf/libelf-dominfo.c @@ -99,6 +99,7 @@ int elf_xen_parse_note(struct elf_binary *elf, [XEN_ELFNOTE_PAE_MODE] = { "PAE_MODE", 1}, [XEN_ELFNOTE_FEATURES] = { "FEATURES", 1}, [XEN_ELFNOTE_BSD_SYMTAB] = { "BSD_SYMTAB", 1}, + [XEN_ELFNOTE_SUSPEND_CANCEL] = { "SUSPEND_CANCEL", 0 }, }; /* *INDENT-ON* */ diff --git a/xen/include/public/elfnote.h b/xen/include/public/elfnote.h index 99f77593d3..77be41bb4b 100644 --- a/xen/include/public/elfnote.h +++ b/xen/include/public/elfnote.h @@ -156,10 +156,15 @@ */ #define XEN_ELFNOTE_L1_MFN_VALID 13 +/* + * Whether or not the guest supports cooperative suspend cancellation. + */ +#define XEN_ELFNOTE_SUSPEND_CANCEL 14 + /* * The number of the highest elfnote defined. */ -#define XEN_ELFNOTE_MAX XEN_ELFNOTE_L1_MFN_VALID +#define XEN_ELFNOTE_MAX XEN_ELFNOTE_SUSPEND_CANCEL /* * System information exported through crash notes. -- 2.30.2